#!user/bin/env python3
# -- coding: utf-8 --
# @Createtime：2023/9/6 14:32
# @Updatetime：14:32
# @Author：Test008
# @File：4-全国疫情地图
# @Description：
import json
from pyecharts.charts import *
from pyecharts.options import *

# 1》从疫情.txt中获取数据
# 2》数据处理，json转化为字典格式，获取到每个省份的名称和确诊人数
# 3》添加到地图数据，创建地图，全局配置
with open('../../../static/doc/yiqing_data/疫情.txt', 'r', encoding='utf-8') as f:
    data_content = f.read()
data_content = json.loads(data_content)
children_datas = data_content['areaTree'][0]['children']

all_province_data = []
for children_data in children_datas:
    province_name = children_data['name']  # 省份名称
    province_confirm = children_data['total']['confirm']  # 省份确诊人数

    # 处理省份不匹配问题 23个省 + 5个自治区 + 4个直辖市 +2个特别行政区
    if province_name == "新疆":
        province_name = "新疆维吾尔自治区"
    elif province_name == "广西":
        province_name = "广西壮族自治区"
    elif province_name == "宁夏":
        province_name = "宁夏回族自治区"
    elif province_name in ["内蒙古", "西藏"]:
        province_name = province_name + "自治区"
    elif province_name in ["北京", "天津", "重庆", "上海"]:
        province_name = province_name + "市"
    elif province_name in ["香港", "澳门"]:
        province_name = province_name + "特别行政区"
    else:
        province_name = province_name + "省"

    all_province_data.append((province_name, province_confirm))  # 把名称和数据组成元组放到列表中
print(all_province_data)
map = Map()
map.add('各省份确诊人数', all_province_data, 'china')
map.set_global_opts(
    title_opts=TitleOpts(title='2021年全国疫情地图'),
    visualmap_opts=VisualMapOpts(
        is_show=True,
        is_piecewise=True,
        pieces=[
            {'min': 0, 'max': 100, 'label': '0-100', 'color': '#f05b72'},
            {'min': 100, 'max': 500, 'label': '100-500', 'color': '#ef5b9c'},
            {'min': 500, 'max': 1000, 'label': '500-1000', 'color': '#f47920'},
            {'min': 1000, 'max': 10000, 'label': '1000-10000', 'color': '#905a3d'},
            {'min': 10000, 'label': '10000+', 'color': '#444693'},
        ]
    )
)

map.render('全国疫情地图分布.html')
